; + (function () {
	"use strict";
	const {
		dialog,
		session,shell
	} = require('electron').remote;
	
	const BrowserWindow = require('electron').remote.BrowserWindow;
	var m_Forms = new Class({ //表单验证
		initialize: function () {
			var _this = this;
			_this._initDom();
		}
	});
	window.Tools = {
		cookie: {
			set: function (key, val, time, fnCallback) { //设置cookie方法
				var date = new Date().getTime(); //获取当前时间
				var expiresDays = time; //将date设置为n天以后的时间
				date = (date + expiresDays * 24 * 3600 * 1000); //格式化为cookie识别的时间
				var cooks = {
					url: ajaxHttpUrl,
					name: key,
					value: val,
					expirationDate: date
				};
				session.defaultSession.cookies.set(cooks, (error) => {
					if (error) {
						console.error(error)
					} else {
						fnCallback(cooks);
					}
				});
			},
			get: function (key, fnCallback) { //获取cookie方法
				if(!key){
					session.defaultSession.cookies.get({
					url: ajaxHttpUrl
				}, (error, cookies) => {
					if (error) {
						console.log(error)
					} else {
						fnCallback(cookies);
					}
				})
					
				}else{
					
					session.defaultSession.cookies.get({
					url: ajaxHttpUrl,
					name: key
				}, (error, cookies) => {
					if (error) {
						console.log(error)
					} else {
						fnCallback(cookies);
					}
				})
					
				}

			},
			delete: function (key) { //删除cookie方法
				if(!key){
						session.defaultSession.cookies.remove(ajaxHttpUrl,(error, cookies) => {
						console.log('移除cookies' + error);
				})
				}else{
					session.defaultSession.cookies.remove(ajaxHttpUrl, key, (error, cookies) => {
						
				})
				}
				
			}
		},


	}
	m_Forms.extend({
		_initDom: function () {
			var _this = this;
			_this.FormEl = jQuery('.J_form');
		},
		Validform: function () {
			var _this = this;
			_this.FormEl.each(function () {
				var _that = jQuery(this);
				_that.Validform({
					tipSweep: true, //表单提交的时候才提示
					ajaxPost: true, //采用ajax提交
					responseFlag: 'code', //实时验证时的返回成功或失败的code名字，此字段为自定义添加，不是validform自有，不能对validform更新
					okCode: 200, //实时验证的成功状态码，即如果远程实时验证成功后后台给的状态，如200为成功，500为失败；此字段为自定义添加，不是validform自有，不能对validform更新
					ignoreHidden: true, //默认为false，当为true时对:hidden的表单元素将不做验证;
					beforeSubmit: function (curform) { //在表单验证通过，提交表单数据之前执行的函数，data参数是当前表单对象。函数return false的话表单将不会提交;
						layer.closeAll();
						layer.load(1, {
							shade: [0.1, '#fff'], //0.1透明度的白色背景
						});
					},
					ajaxurl: { //远程实时验证
						beforeSend: function (data, obj) { //远程验证前
							layer.closeAll();
							layer.load(1, {
								shade: [0.1, '#fff'], //0.1透明度的白色背景
							});
						},
						success: function (res, obj) { //res 为服务器返回的json对象，obj为表单对象
							$('.J_error_tips').html(res.msg);
						},
						error: function () {
							$('.J_error_tips').html('出现未知错误，请稍后再试...');
						}
					},
					tiptype: function (msg, o, cssctl) {
						//msg：提示信息;
						//o:{obj:*,type:*,curform:*},
						//obj指向的是当前验证的表单元素（或表单对象，验证全部验证通过，提交表单时o.obj为该表单对象），
						//type指示提示的状态，值为1、2、3、4， 1：正在检测/提交数据，2：通过验证，3：验证失败，4：提示ignore状态, 
						//curform为当前form对象;
						//cssctl:内置的提示信息样式控制函数，该函数需传入两个参数：显示提示信息的对象 和 当前提示的状态（既形参o中的type）;
						if (o.type == 3) {

							$('.J_error_tips').html(msg);

						}
						if (o.type == 2) {
							$('.J_error_tips').html(' ');
						}
					},
					callback: function (res) { //整个表单提交成功后回调
						if (typeof (res) == 'string') {
							res = JSON.parse(res);
						}
						$('.J_error_tips').html('');
						layer.closeAll();
						layer.msg(res.msg || '数据提交成功！', {
							end: function () {
								if (res.hasOwnProperty('data') && res.data.hasOwnProperty('userinfo') && res.data.userinfo.hasOwnProperty('token')) {
									Tools.cookie.set("token", res.data.userinfo.token, 10);
									BrowserWindow.getFocusedWindow().loadFile('./web/build/html/index/index.html');
									
								}
							}
						})

					}
				});
			});
		},



	});
	var m_topBar = new Class();
	m_topBar.extend({

		rightTools: function () {
			$('.J_setskin').click(function () {
				var _the = $(this);
				var skinBox = _the.find('.skins-box');
				var g_header = $('.g-header-menu');

				skinBox.toggleClass('show');
				if(skinBox.hasClass('show')){
					skinBox.css({'zIndex': 1002});
					g_header.css({'height': '120px'});
				}else{
					skinBox.css({'zIndex': '-1'});
					g_header.css({'height': '35px'});
					
				}
			});
			$('.g-header').mouseleave(function () {
				$(this).find('.skins-box').removeClass('show').css({'zIndex': '-1'});
				$('.g-header-menu').css({'height': '35px'});
			});
			
			//换肤
			$('.J_grey').on('click', function () { //经典黑
				$('html').removeClass('hm-camel');
				$('.J_iframs').contents().find('html').removeClass('hm-camel');
			})
			$('.J_army').on('click', function () { //迷彩服
				$('html').addClass('hm-camel');
				$('.J_iframs').contents().find('html').addClass('hm-camel');
			})
		},
		closeOrMin: function () { //关闭和最小化

			let brow = BrowserWindow.getFocusedWindow();
			$('.J_hide').on('click', function () { //最小化窗口
				brow.minimize()
			});
			$('.J_close').on('click', function () {

				brow.close()

			})
		},
		loginOut: function(){//退出登录
			var _this = this;
			$('.J_loginout').on('click', function () {
					Tools.cookie.get('token',function(cookies){//查找cook
						if(cookies && cookies.length> 0 ){
							Tools.cookie.delete('token');
							BrowserWindow.getFocusedWindow().loadFile('./web/build/html/login/login.html');
						}
						
					})
						
			})
			
			
		},
		isLoginOut: function(){
			Tools.cookie.get('token',function(cookies){//判断cookies是否过期
						if(cookies && cookies.length> 0 && new Date().getTime() > parseInt(cookies[0].expirationDate)){
							Tools.cookie.delete('token');
								layer.closeAll();
								BrowserWindow.getFocusedWindow().loadFile('./web/build/html/login/login.html');
						}
						
					})
		}


	});

	$('document').ready(function () {
		
		var Forms = new m_Forms();
		var topBar = new m_topBar();
		topBar.isLoginOut();//是否登录，如果没有登录，则跳到登录页
		topBar.rightTools(); //右侧操作
		topBar.closeOrMin(); //关闭或者最小化窗口
		topBar.loginOut();//绑定退出登录
		
		if ($('.J_form').length > 0) {
			Forms.Validform();
		}
	});
}());
